package main

import (
	_ "beegoProject16/models/auth"
	_ "beegoProject16/models/finance"
	_ "beegoProject16/models/my_center"
	_ "beegoProject16/models/news"
	_ "beegoProject16/routers"
	"beegoProject16/utils"
	"fmt"
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/logs"
	"github.com/astaxie/beego/orm"
	_ "github.com/go-sql-driver/mysql"
	"log"
)

/*
9.90【内容管理模块】模型创建及表迁移
9.91【内容管理模块】栏目列表页面完善
	1. 创建内容模块 models - new - new.go 定义两个数据库模型
	2. 创建新闻菜单 内容管理一级菜单；栏目列表，二级菜单；新闻列表，二级菜单
	3. 页面分配权限

9.92【内容管理模块】栏目分页及添加功能完成
	1. 创建控制器 news - category_controller.go - Get方法
	2. 拷贝user-list.html -> category-list.html 和 news-list.html
	3. 路由
    4. 数据库添加url
	5. category-list.html 页面修改
	6. 添加数据测试页面显示效果
	7. 拷贝user-add.html -> category-add.html
	8. 增加 ToAdd 和 DoAdd 方法
	9. 路由
	10. category-list.html 52H
	11. category-add.html 34H,37H,41H，46H，删除多余，80-91H,115H
	12. 定义 DoAdd 数据获取


9.93【内容管理模块】新闻列表分页及查询功能完成
	1. 新建控制器 new_controller.go 注意增加.RelatedSel()关联查询
	2. 路由
	3. news-list.html 修改表单标题和内容 61H，115H，
	4. 添加数据查看效果
	5. 创建控制器ToAdd DoAdd
	6. 路由
	7. 拷贝 category-list.html => news-add.html
	8. news-add.html 修改标题及栏目

9.94【内容管理模块】froala_editor富文本的使用一
	1. 拷贝文件夹 froala_editor -> static目录下
	2. news-list.html 窗口大小调整52H 1000，500
	3. news-add.html 引入文本编辑器 froala_editor 27H-48H
	4. news-add.html 70H, 112-122H


9.95【内容管理模块】froala_editor富文本的使用二
	1. news-add.html 79H-85H，122H-178H
	2. new_controller.go ToAdd 获取前端数据


9.96【内容管理模块】使用froala_editor富文本插入数据
	1. new_controller.go DoAdd 定义数据库逻辑

9.97【内容管理模块】使用froala_editor富文本上传图片
	1. news-add.html 122-123H
	2. 定义图片上传方法 new_controller.go UpLoadImg
	3. 路由
	4. main.go 115H-增加 SetStaticPath
	5. 创建文件上传路径根目录下创建文件夹  upload - news_img


9.98【内容管理模块】使用froala_editor富文本更新数据
	1. ToEdit 增加编辑控制器
	2. 路由
	3. 拷贝 news-add.html -> news-edit.html
	4. news-list.html修改编辑控制器 103H
	5. ToEdit 逻辑
	6. news-edit.html 61H,70H,81H,103H
	7. 增加提交方法 DoEdit
	8. 路由
	9. news-edit.html 97H,

*/

func init() {
	user := beego.AppConfig.DefaultString("mysql::Username", "root")
	pwd := beego.AppConfig.DefaultString("mysql::Password", "Ideal123")
	host := beego.AppConfig.DefaultString("mysql::Host", "127.0.0.1")
	port := beego.AppConfig.DefaultInt("mysql::Port", 3306)
	dbName := beego.AppConfig.DefaultString("mysql::DbName", "beegoProject")

	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=true&loc=PRC",
		user, pwd, host, port, dbName)

	orm.RegisterDriver("mysql", orm.DRMySQL)
	orm.RegisterDataBase("default", "mysql", dsn)

	db, err := orm.GetDB("default")
	if err != nil {
		log.Fatal(err)
	} else if err := db.Ping(); err != nil {
		log.Fatal(err)
	}
}

func main() {
	orm.RunCommand()
	/*	orm.Debug = true*/
	beego.BConfig.WebConfig.Session.SessionOn = true

	// 未登录请求拦截
	beego.InsertFilter("/main/*", beego.BeforeRouter, utils.LoginFilter)

	// 日志
	logs.SetLogger(logs.AdapterMultiFile, `{"filename":"logs/beego.log","separate":["error","info","debug"]}`)
	logs.SetLogFuncCallDepth(3)
	beego.SetStaticPath("/upload", "upload")

	beego.Run()
}
